home *** CD-ROM | disk | FTP | other *** search
- //********************************************
- //* Global object to hold drag information *
- //********************************************
- var dragObj = new Object();
- var dragLastTime;
- var dragLastX;
- var dragDirection;
- var dragging = false;
- var dragDistance;
- var creeping = false;
- var oldX;
- var isIE7 = ((navigator.userAgent).indexOf('MSIE 7.0') > -1);
-
- function GetCurrentTime()
- { var my_current_timestamp;
- my_current_timestamp = new Date();
- return my_current_timestamp.getTime();
- }
-
- function dragStart(event, id)
- { dragging = true;
-
- //*************************
- //* Disable nice titles *
- //*************************
- supressNiceTitles = true;
-
- var el, x;
- dragObj.elNode = document.getElementById(id);
-
- // Get cursor position with respect to the page.
- x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
- dragLastX = x;
-
- // Save starting positions of cursor and element.
- dragObj.cursorStartX = x;
- dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
-
- // Capture mousemove and mouseup events on the page.
- document.attachEvent("onmousemove", dragGo);
- document.attachEvent("onmouseup", dragStop);
- window.event.cancelBubble = true;
- window.event.returnValue = false;
- }
-
-
- function dragGo(event)
- { var x;
-
- // Get cursor position with respect to the page.
- x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
-
- // Move drag element by the same amount the cursor has moved.
- dragIt(x, false);
-
- window.event.cancelBubble = true;
- window.event.returnValue = false;
-
- dragLastTime = GetCurrentTime();
-
- if (x > dragLastX)
- { dragDirection = "R";
- dragDistance = x - dragLastX;
- }
- else
- { dragDirection = "L";
- dragDistance = dragLastX - x;
- }
-
- dragLastX = x;
- }
-
-
- function dragIt(x, calledFromCreeper)
- { if (calledFromCreeper == true)
- { if (creeping == false)
- { return;
- }
- else
- { if (oldX != undefined)
- { if (dragDirection == "L")
- { if (oldX < x) return;
- }
- else
- { if (oldX > x) return;
- }
- }
-
- oldX = x;
- }
- }
-
- if (dragObj.elNode.scrollWidth > document.body.clientWidth)
- { if (((parseInt(dragObj.elStartLeft) + x - dragObj.cursorStartX) + dragObj.elNode.scrollWidth) < document.body.clientWidth)
- { dragObj.elNode.style.left = (document.body.clientWidth - dragObj.elNode.scrollWidth - 7) + "px";
- dragObj.elNode.style.top = dragObj.elNode.style.top;
- }
- else if (parseInt(dragObj.elStartLeft) + x - dragObj.cursorStartX > 32)
- { dragObj.elStartLeft = "32" + "px";
- dragStop(event);
- }
- else
- { try
- { dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
- dragObj.elNode.style.top = dragObj.elNode.style.top;
- }
- catch(err)
- { if (dragging == true)
- { dragStop(event);
- dragObj.elStartLeft = "32px";
- }
- }
- }
- }
- }
-
-
- function dragStop(event)
- { dragging = false;
-
- //*************************************************
- //* Stop capturing mousemove and mouseup events *
- //*************************************************
- document.detachEvent("onmousemove", dragGo);
- document.detachEvent("onmouseup", dragStop);
-
- if (isIE7 == true)
- { if ((GetCurrentTime() - dragLastTime) < 50)
- { dragCreep();
- }
- else
- { //***************************
- //* Re-enable nice titles *
- //***************************
- supressNiceTitles = false;
- }
- }
- else
- { if ((GetCurrentTime() - dragLastTime) < 40)
- { dragCreep();
- }
- else
- { //***************************
- //* Re-enable nice titles *
- //***************************
- supressNiceTitles = false;
- }
- }
- }
-
-
- function dragCreep()
- { if (dragging == true) return;
- creeping = true;
-
- var creepTime;
- var creepDistance;
- var creepStep;
- var x = dragLastX;
-
- if (isIE7 == true)
- { creepTime = 30;
- creepStep = 2;
-
- if (dragDistance < 10)
- creepDistance = 14;
- else if (dragDistance < 20)
- creepDistance = 30;
- else if (dragDistance < 30)
- creepDistance = 40;
- else
- creepDistance = 50;
- }
- else
- { creepTime = 20;
- creepStep = 3;
-
- if (dragDistance < 5)
- creepDistance = 10;
- else if (dragDistance < 10)
- creepDistance = 20;
- else if (dragDistance < 20)
- creepDistance = 30;
- else if (dragDistance < 30)
- creepDistance = 40;
- else
- creepDistance = 50;
- }
-
- while (creepDistance > 0)
- { if (creeping == false) return;
-
- if (dragDirection == "L")
- x = x - creepDistance;
- else
- x = x + creepDistance;
-
- creepDistance = creepDistance - creepStep;
- if (creepDistance <= 0)
- { //***************************
- //* Re-enable nice titles *
- //***************************
- setTimeout("supressNiceTitles = false", creepTime);
- return;
- }
-
- setTimeout("dragIt(" + x + ",true)", creepTime);
- creepTime = creepTime + 30;
- }
- }